/**
 * @Author ZhangCuirong
 * @Date 2025/9/19 10:25
 * @description:
 */
public class Solution400 {
    /**
     * @param n
     * @return
     */
    public int findNthDigit(int n) {
        long base = 1;//base：表示当前位数的起始数字（1 位数从 1 开始，2 位数从 10 开始，3 位数从 100 开始等）
        int digit = 1;//表示当前正在处理的数字位数（1 位、2 位、3 位等）
        while (n > 9 * base * digit) {//这段代码的作用是确定第 n 个数字所在的数字是几位数：
            n -= (digit * base * 9);
            digit++;
            base *= 10;
        }
        //(n - 1) /digit 表示从 base 开始数的第几个数字
        //加上 base 就得到了具体的数字
        long val = base + (n - 1) / digit;
        //是这个三位数的第几位呢 计算要找的数字是在 val 中的第几位（从 0 开始计数）
        int index = (n - 1) % digit;
        return ("" + val).charAt(index) - '0';
    }
}
